  'Get list of files in directory tree from FolderPath (Does not capture an empty folder)
  Dim files() = IO.Directory.GetFiles(FolderPath, "*.*", SearchOption.AllDirectories)
  If FolderPath.EndsWith("\") Then FolderPath = FolderPath.Substring(0, FolderPath.Length - 1)
  Using Zip As Package = ZipPackage.Open(ZipFullFilename, FileMode.OpenOrCreate, FileAccess.ReadWrite)
    For Each item In files
      Dim relFile = item.Substring(FolderPath.Length)
      relFile = relFile.Replace(" "c, "_"c).Replace("\", "/")
      If relFile.StartsWith("/") = False Then relFile = "/" & relFile
      Dim filePart As PackagePart = Zip.CreatePart(New Uri(relFile), _
                Net.Mime.MediaTypeNames.Application.ZIP, Optimization)
      'Read the file into a byte array that can be written to Zip stream
      Dim arrBuffer As Byte() = File.ReadAllBytes(item)
      filePart.GetStream().Write(arrBuffer, 0, arrBuffer.Length)
    Next
  End Using
